package com.fowo.api.model.stock;

import com.alibaba.excel.annotation.ExcelProperty;
import com.fowo.api.common.validator.*;
import javax.validation.constraints.*;
import lombok.Data;

/**
 * 出库单子表 预览导入辅助模型(全字段为文本类型)
 * @author yl_ls
 */
@Data
public class StockOutProductImportPo {

  /** 所属出库单 */
  @ExcelProperty("所属出库单")
  @Size(max = 500, message = "所属出库单长度不能超过500")
  private String stockOutIdRemark;

  /** 产品 */
  @ExcelProperty("*产品")
  @NotBlank(message = "产品不能为空")
  @Size(max = 500, message = "产品长度不能超过500")
  private String productIdName;

  /** SKU */
  @ExcelProperty("SKU")
  @Size(max = 50, message = "SKU长度不能超过50")
  private String sku;

  /** 产品名称 */
  @ExcelProperty("产品名称")
  @Size(max = 500, message = "产品名称长度不能超过500")
  private String productName;

  /** 商铺名称 */
  @ExcelProperty("商铺名称")
  @Size(max = 50, message = "商铺名称长度不能超过50")
  private String shopName;

  /** FNSKU */
  @ExcelProperty("FNSKU")
  @Size(max = 50, message = "FNSKU长度不能超过50")
  private String fnsku;

  /** 出库数量 */
  @ExcelProperty("*出库数量")
  @NotBlank(message = "出库数量不能为空")
  @IntegerString(
    message = "出库数量数值格式不正确",
    label = "出库数量",
    min = 0
  )
  private String quantity;

  /** 可用出库量 */
  @ExcelProperty("可用出库量")
  @IntegerString(
    message = "可用出库量数值格式不正确",
    label = "可用出库量",
    min = 0
  )
  private String productGoodNum;

  /** 次品出库量 */
  @ExcelProperty("次品出库量")
  @IntegerString(
    message = "次品出库量数值格式不正确",
    label = "次品出库量",
    min = 0
  )
  private String productBadNum;

  /** 单价 */
  @ExcelProperty("*单价")
  @NotBlank(message = "单价不能为空")
  @DecimalString(message = "单价小数格式不正确", label = "单价")
  private String price;

  /** 单位费用 */
  @ExcelProperty("单位费用")
  @DecimalString(message = "单位费用小数格式不正确", label = "单位费用")
  private String singleFee;

  /** 单位出库成本 */
  @ExcelProperty("单位出库成本")
  @DecimalString(message = "单位出库成本小数格式不正确", label = "单位出库成本")
  private String singleStockCost;

  /** 单位头程 */
  @ExcelProperty("单位头程")
  @DecimalString(message = "单位头程小数格式不正确", label = "单位头程")
  private String unitHeadFee;

  /** 货值 */
  @ExcelProperty("货值")
  @DecimalString(message = "货值小数格式不正确", label = "货值")
  private String productAmounts;

  /** 费用 */
  @ExcelProperty("费用")
  @DecimalString(message = "费用小数格式不正确", label = "费用")
  private String feeCost;

  /** 头程 */
  @ExcelProperty("头程")
  @DecimalString(message = "头程小数格式不正确", label = "头程")
  private String headWayFee;

  /** 出库成本 */
  @ExcelProperty("出库成本")
  @DecimalString(message = "出库成本小数格式不正确", label = "出库成本")
  private String amount;

  /** 可用仓位id */
  @ExcelProperty("可用仓位id")
  @LongString(message = "可用仓位id数值格式不正确", label = "可用仓位id")
  private String storageBinGoodId;

  /** 可用仓位 */
  @ExcelProperty("可用仓位")
  @Size(max = 50, message = "可用仓位长度不能超过50")
  private String storageBinGoodName;

  /** 可用仓位数量 */
  @ExcelProperty("可用仓位数量")
  @IntegerString(
    message = "可用仓位数量数值格式不正确",
    label = "可用仓位数量",
    min = 0
  )
  private String storageBinGoodNum;

  /** 次品仓位id */
  @ExcelProperty("次品仓位id")
  @LongString(message = "次品仓位id数值格式不正确", label = "次品仓位id")
  private String storageBinBadId;

  /** 次品仓位 */
  @ExcelProperty("次品仓位")
  @Size(max = 50, message = "次品仓位长度不能超过50")
  private String storageBinBadName;

  /** 次品仓位数量 */
  @ExcelProperty("次品仓位数量")
  @IntegerString(
    message = "次品仓位数量数值格式不正确",
    label = "次品仓位数量",
    min = 0
  )
  private String storageBinBadNum;

  /** 小计 */
  @ExcelProperty("小计")
  @DecimalString(message = "小计小数格式不正确", label = "小计")
  private String subtotal;

  /** 当期出库成本金额 */
  @ExcelProperty("当期出库成本金额")
  @DecimalString(
    message = "当期出库成本金额小数格式不正确",
    label = "当期出库成本金额"
  )
  private String currentIssueCostAmount;
}
